/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.eventos.beans;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
//import org.apache.poi.hssf.usermodel.HSSFRow;
import org.cip.esymons.eventos.adapaters.ExportarExcel;
import org.cip.esymons.eventos.adapaters.RutaCarpetaReporte;
import org.cip.esymons.eventos.bc.ContratoDelegate;
import org.cip.esymons.eventos.be.Contrato;

/**
 *
 * @author Oscar
 */
public class ReporteContratosController {

    ContratoDelegate delegate;
    List<Contrato> listaReportesFechas;
    Date fechaInicio;
    Date fechaFin;

    public ReporteContratosController() {
        delegate = new ContratoDelegate();
        listaReportesFechas = new ArrayList<Contrato>();
    }

    public Date getFechaFin() {
        return fechaFin;
    }

    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

    public Date getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public List<Contrato> getListaReportesFechas() {
        return listaReportesFechas;
    }

    public void setListaReportesFechas(List<Contrato> listaReportesFechas) {
        this.listaReportesFechas = listaReportesFechas;
    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }

    public String buscarContratos() {
        try {
            if (fechaInicio.equals(null) || fechaFin.equals(null)) {
                mostrarMensaje("Error", "Ingrese Rango de Fechas Antes de Buscar", FacesMessage.SEVERITY_ERROR);
                return null;
            }
        } catch (Exception e) {
            mostrarMensaje("Error", "Ingrese Rango de Fechas Antes de Buscar", FacesMessage.SEVERITY_ERROR);
            return null;
        }
        try {
            listaReportesFechas = new ArrayList<Contrato>();
            listaReportesFechas = delegate.reporte_fechas(fechaInicio, fechaFin);
            System.out.println("tam lista-- " + listaReportesFechas.size());
        } catch (Exception e) {
            System.out.println("--error-" + e.toString());
        }
        return null;
    }

    @SuppressWarnings("static-access")
    public String exportarListaContratos() {
        if (listaReportesFechas.size() > 0) {
            RutaCarpetaReporte ruta = new RutaCarpetaReporte();
            String rutaPlantilla = "", archGenerado = "";
            rutaPlantilla = ruta.getRuta() + "PlantillaContratos.xls";
            archGenerado = ruta.getRuta() + "RepContratosCIP.xls";
            SimpleDateFormat simplef = new SimpleDateFormat("dd/MM/yyyy");
            ExportarExcel export = new ExportarExcel();
            try {
                export.generarDocDesdePlantilla(rutaPlantilla, archGenerado);
                int i = 22;
                export.addCeldaString(3, 2, simplef.format(fechaInicio));
                export.addCeldaString(3, 4, simplef.format(fechaFin));
                for (Contrato det : listaReportesFechas) {                   
                    export.addCeldaString(i, 1, det.getConNumero());                 
                    export.addCeldaString(i, 2, det.getEstado());                
                    export.addCeldaString(i, 3, det.getContratante());                
                    export.addCeldaString(i, 4, det.getRecursos());                
                    export.addCeldaDouble(i, 5, det.getConApagar());                 
                    i++;
                }
                //Agregar Formulas
               System.out.println("Formula "+export.getCeldaFormula(8, 5));
//               String kk="";
//                System.out.println("---"+kk);
               export.addCeldaFormula(8, 5,"COUNTIF(C23:C91, \"Anulado\")");
               export.addCeldaFormula(9, 5,"COUNTIF(C23:C91, \"Sin Pagar\")");
               export.addCeldaFormula(10, 5,"COUNTIF(C23:C91, \"Pagado\")");
               export.addCeldaFormula(14, 5,"COUNTIF(F23:F91, \">-1\")");
               export.addCeldaFormula(15, 5,"SUM(F23:F91)");
               export.addCeldaFormula(16, 5,"F16/F15");              
                ruta.generarExcel(archGenerado, export.cerrarConexion());
            } catch (Exception e) {
                ruta.generarExcel(archGenerado, export.cerrarConexion());
                System.out.print("----" + e.toString());
            }
        } else {
            mostrarMensaje("Error", "Deben existir datos en la Lista para exportar", FacesMessage.SEVERITY_ERROR);
        }
        return "";
    }
}
